﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DevExpress.XtraTab;
using DevExpress.XtraEditors;
using System.Drawing;
using System.Drawing.Drawing2D;
using UniMana.Utils.Config;

namespace UniMana.Utils.Control
{
   public static class TabShowFrm
   {
       /// <summary>
       /// Thay đổi kích thước ảnh
       /// </summary>
       /// <param name="imgToResize"></param>
       /// <param name="size"></param>
       /// <returns></returns>
       private static Image resizeImage(Image imgToResize, Size size)
       {
           int sourceWidth = imgToResize.Width;
           int sourceHeight = imgToResize.Height;

           float nPercent = 0;
           float nPercentW = 0;
           float nPercentH = 0;

           nPercentW = ((float)size.Width / (float)sourceWidth);
           nPercentH = ((float)size.Height / (float)sourceHeight);

           if (nPercentH < nPercentW)
               nPercent = nPercentH;
           else
               nPercent = nPercentW;

           int destWidth = (int)(sourceWidth * nPercent);
           int destHeight = (int)(sourceHeight * nPercent);

           Bitmap b = new Bitmap(destWidth, destHeight);
           Graphics g = Graphics.FromImage((Image)b);
           g.InterpolationMode = InterpolationMode.HighQualityBicubic;

           g.DrawImage(imgToResize, 0, 0, destWidth, destHeight);
           g.Dispose();

           return (Image)b;
       }
       /// <summary>
        /// Add Form vào TabPage sau đó add tabe page này vào TabControl
        /// </summary>
        /// <param name="xtbMdiChildContainer">TabControl</param>
        /// <param name="tabPageCaption">Tiêu đề cho TabPage</param>
        /// <param name="subForm">Form cần add vào TabPage</param>
       public static void ShowTabbedMdi(this XtraForm subForm, XtraTabControl xtbMdiChildContainer)
        {

           DevExpress.Utils.WaitDialogForm dlg = new DevExpress.Utils.WaitDialogForm(MsgConfig.MSG_WAIT,MsgConfig.MSG_LOADING); 
           bool check = false; //kiem tra xem tabpage co ton tai chua? 
            foreach (XtraTabPage xtrPage in xtbMdiChildContainer.TabPages)
            {
                if (xtrPage.Text == subForm.Text)
                {
                    xtbMdiChildContainer.SelectedTabPage = xtrPage;
                    check = true;
                    break;
                }
            }
            //nếu tabpage chưa mở thì mở mới và add vào tab control
            if (!check)
            {
                XtraTabPage xTabPage = new XtraTabPage();

                xTabPage.Text = subForm.Text;
                Size size = new Size(15,15);
                System.Drawing.Image bt = resizeImage(subForm.Icon.ToBitmap(), size);
                xTabPage.Image = bt;
               
                //chọn tab mới tạo
                xtbMdiChildContainer.TabPages.Add(xTabPage);
                xtbMdiChildContainer.SelectedTabPage = xTabPage;
                if (subForm != null)
                {
                    
                   

                    //set thuộc tính FormBorderStyle là None
                    subForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

                    //thiết lập padding của form con
                    subForm.Padding = new System.Windows.Forms.Padding(3);
                    //add form vào tabpage
                    subForm.TopLevel = false;
                    xTabPage.Controls.Add(subForm);
                    subForm.Visible = true;
                    //dock form con fill vào form cha
                    subForm.Dock = System.Windows.Forms.DockStyle.Fill;
                }
            }
            dlg.Close();

        }
       
    }

}
